//计算Fibonacci数列第n项（线性递归版）：入口形式fib(n, prev)
//中心思想 用两个值，不断往上累加。 跟线性迭代类似。
long fib2(int n, long &prev) {
    if (0 == n) //若到达递归基，则
    {
        prev = 1;
        return 0;
    } //直接取值：fib(-1) = 1, fib(0) = 0
    else { //否则
        //f2 中的pp 会当做参数传到f1中，作为f1的p 来接受f0的值，保存下来。
        long prevPrev;
        //prev 参数是用的地址做形参。可以一直被修改。
        prev = fib2(n - 1, prevPrev); //递归计算前两项
        return prevPrev + prev; //其和即为正解
    }
} //用辅助变量记录前一项，返回数列的当前项，O(n)